<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript">
	//工厂方式就是封装啊，关键最后要返回值
	function createPerson(name, sex) {		//构造函数：用来构造对象
		//1.原料
		var obj = new Object();

		//2.加工
		obj.name = name;
		obj.sex = sex;

		obj.showName = function (){
			alert(this.name);
		}
		obj.showSex = function (){
			alert(this.sex);
		}

		//3.出厂
		return obj;				//关键最后要返回值
	}

	var p1 = createPerson('Mo', '男');
	var p2 = createPerson('Alice','女');
/*
	p1.showName();
	p1.showSex();
	p2.showName();
	p2.showSex();
*/
	alert(p1.showName == p2.showName);			//false.说明每一个创建出来的对象都有自己的一套方法，缺点就是浪费资源
	
	/*
	由此可见，工厂方式存在的问题：
		1. 构造对象的时候没有new（如var p1 = createPerson('Mo', '男');）
		2. 每一个创建出来的对象都有自己的一套方法，浪费资源
	*/

	//另外，例如
/*		var a = function (){
			alert('abc')
		}
		var b = function (){
			alert('abc')
		}
		alert(a == b);			//false
*/
		//以上的完整形式：
		var a = new Function("alert('abc')");
		var b = new Function("alert('abc')");
		alert(a == b);			//false
		
		//两种中，前者是简写，后者是完整形式。但是创建的对象各不相同
	</script>
</head>
<body>
	
</body>
</html>